﻿Imports DNP.GestionComercial.BE
Imports DNP.DevNetPeru.Data
Imports System.Data.SqlClient
Public Class AgenciaDAL
    Public Function Guardar(ByVal pObjeto As AgenciaBE, ByVal usuario As String) As RespuestaBE

        Dim lstUbigeo As New List(Of UbigeoBE)
        Dim oRespuesta As New RespuestaBE
        Dim mensaje As String

        Try

            Using cmd As New SqlCommand("COM_INS_COM_AGENCIA")

                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("p_NAGE_CODIGO", SqlDbType.Int).Value = pObjeto.NAGE_CODIGO
                cmd.Parameters.Add("p_NEMP_CODIGO", SqlDbType.Int).Value = pObjeto.NEMP_CODIGO
                cmd.Parameters.Add("p_CAGE_UBIGEO", SqlDbType.VarChar).Value = pObjeto.CAGE_UBIGEO
                cmd.Parameters.Add("p_CAGE_DIRECCION", SqlDbType.VarChar).Value = pObjeto.CAGE_DIRECCION
                cmd.Parameters.Add("p_CAGE_ESTADO", SqlDbType.Char).Value = pObjeto.CAGE_ESTADO
                cmd.Parameters.Add("p_DAUDI_FEC_INS", SqlDbType.DateTime).Value = pObjeto.DAUDI_FEC_INS
                cmd.Parameters.Add("p_CAUDI_USR_INS", SqlDbType.VarChar).Value = usuario
                cmd.Parameters.Add("p_NAGE_NOMBRE", SqlDbType.VarChar).Value = pObjeto.CAGE_NOMBRE
                cmd.Parameters.Add("p_MENSAJE", SqlDbType.VarChar, 2000).Direction = ParameterDirection.Output

                BaseDatos.Execute(cmd)

                mensaje = Convert.ToString(cmd.Parameters("p_MENSAJE").Value)
                If mensaje.StartsWith("-1@") Then
                    oRespuesta.Respuesta = False
                    oRespuesta.Mensaje = mensaje.Split("@")(1)
                Else
                    oRespuesta.Respuesta = True
                    oRespuesta.Mensaje = mensaje
                End If

            End Using

        Catch ex As Exception
            oRespuesta.ValorRertono = lstUbigeo
            oRespuesta.Respuesta = False
            oRespuesta.Mensaje = ex.ToString

        End Try

        Return oRespuesta

    End Function

    Public Function Eliminar(ByVal pObjeto As PARAMETROBE, ByVal usuario As String) As RespuestaBE

        Dim oRespuesta As New RespuestaBE
        Dim mensaje As String
        Try
            Using cmd As New SqlCommand("COM_DEL_COM_AGENCIA")
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("p_NAGE_CODIGO", SqlDbType.Int).Value = pObjeto.PARAMETRO01
                cmd.Parameters.Add("p_USUARIO", SqlDbType.VarChar).Value = usuario
                cmd.Parameters.Add("p_MENSAJE", SqlDbType.VarChar, 2000).Direction = ParameterDirection.Output
                BaseDatos.Execute(cmd)
                mensaje = Convert.ToString(cmd.Parameters("p_MENSAJE").Value)
                If mensaje.StartsWith("-1@") Then
                    oRespuesta.Respuesta = False
                    oRespuesta.Mensaje = mensaje.Split("@")(1)
                Else
                    oRespuesta.Respuesta = True
                    oRespuesta.Mensaje = mensaje
                End If
            End Using
        Catch ex As Exception
            oRespuesta.Respuesta = False
            oRespuesta.Mensaje = ex.ToString
        End Try
        Return oRespuesta

    End Function

    Public Function ListarTodos(ByVal pParametro As PARAMETROBE) As RespuestaBE

        Dim lstObjeto As New List(Of AgenciaBE)
        Dim oRespuesta As New RespuestaBE
        Dim dt As DataTable

        Try
            Using cmd As New SqlCommand("COM_SEL_COM_AGENCIA")
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("p_BUSCAR", SqlDbType.VarChar).Value = pParametro.PARAMETRO01
                Using dr As SqlDataReader = BaseDatos.GetDataReader(cmd)
                    dt = New DataTable()
                    dt.Load(dr)
                    oRespuesta.ValorRertono = dt
                    oRespuesta.Respuesta = True
                End Using
            End Using

        Catch ex As Exception
            oRespuesta.ValorRertono = lstObjeto
            oRespuesta.Respuesta = False
            oRespuesta.Mensaje = ex.ToString '"msgErrorCargarInfoBD" 
        End Try
        Return oRespuesta
    End Function

    Public Function Obtener(ByVal codigo As String) As RespuestaBE
        Dim obj As New AgenciaBE
        Dim oRespuesta As New RespuestaBE
        Dim dt As DataTable
        Try
            Using cmd As New SqlCommand("COM_SEL_COM_AGENCIAXCODIGO")
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("p_CODIGO", SqlDbType.VarChar).Value = codigo
               Using dr As SqlDataReader = BaseDatos.GetDataReader(cmd)
                    dt = New DataTable()
                    dt.Load(dr)
                    Dim i As Integer = 0
                    While i < dt.Rows.Count
                        obj = LLenarEntidad(dt.Rows(i))
                        i = i + 1
                    End While
                    oRespuesta.ValorRertono = obj
                    oRespuesta.Respuesta = True
                End Using
            End Using
        Catch ex As Exception
            oRespuesta.ValorRertono = obj
            oRespuesta.Respuesta = False
            oRespuesta.Mensaje = ex.ToString '"msgErrorCargarInfoBD" 
        End Try
        Return oRespuesta

    End Function

    Private Function LLenarEntidad(ByVal pdtrSource As System.Data.DataRow) As AgenciaBE
        Dim abeResultado As New AgenciaBE

        With abeResultado
         if pdtrSource.Table.Columns.Contains("NAGE_CODIGO") Then If IsDBNull(pdtrSource("NAGE_CODIGO")) Then .NAGE_CODIGO= 0 Else .NAGE_CODIGO = pdtrSource("NAGE_CODIGO")
            If pdtrSource.Table.Columns.Contains("NEMP_CODIGO") Then If IsDBNull(pdtrSource("NEMP_CODIGO")) Then .NEMP_CODIGO = 0 Else .NEMP_CODIGO = pdtrSource("NEMP_CODIGO")
            If pdtrSource.Table.Columns.Contains("CAGE_UBIGEO") Then If IsDBNull(pdtrSource("CAGE_UBIGEO")) Then .CAGE_UBIGEO = String.Empty Else .CAGE_UBIGEO = pdtrSource("CAGE_UBIGEO")
            If pdtrSource.Table.Columns.Contains("CAGE_DIRECCION") Then If IsDBNull(pdtrSource("CAGE_DIRECCION")) Then .CAGE_DIRECCION = String.Empty Else .CAGE_DIRECCION = pdtrSource("CAGE_DIRECCION")
            If pdtrSource.Table.Columns.Contains("CAGE_ESTADO") Then If IsDBNull(pdtrSource("CAGE_ESTADO")) Then .CAGE_ESTADO = String.Empty Else .CAGE_ESTADO = pdtrSource("CAGE_ESTADO")
            If pdtrSource.Table.Columns.Contains("DAUDI_FEC_INS") Then If IsDBNull(pdtrSource("DAUDI_FEC_INS")) Then .DAUDI_FEC_INS = Date.MinValue Else .DAUDI_FEC_INS = pdtrSource("DAUDI_FEC_INS")
            If pdtrSource.Table.Columns.Contains("CAUDI_USR_INS") Then If IsDBNull(pdtrSource("CAUDI_USR_INS")) Then .CAUDI_USR_INS = String.Empty Else .CAUDI_USR_INS = pdtrSource("CAUDI_USR_INS")
            If pdtrSource.Table.Columns.Contains("CAGE_NOMBRE") Then If IsDBNull(pdtrSource("CAGE_NOMBRE")) Then .CAGE_NOMBRE = String.Empty Else .CAGE_NOMBRE = pdtrSource("CAGE_NOMBRE")

        End With
        Return abeResultado

    End Function

End Class
